package main

import "fmt"

// 该函数返回两个函数实例
func getFunc(base int) (func(int), func(int)) {
	// 打印getFunc()函数的参数base的内存地址
	fmt.Printf("calc.base address = %p\n", &base)

	add := func(num int) {
		base += num
		// 在加法函数中打印base的内存地址
		fmt.Printf("add.base address = %p\n", &base)
	}

	// 减法函数赋值给变量minus
	minus := func(num int) {
		base -= num
		// 在减法函数中打印base的内存地址
		fmt.Printf("minus.base address = %p\n", &base)
	}

	// 返回两个函数变量
	return add, minus
}

func main15() {
	base := 10
	fmt.Printf("main.base address = %p\n", &base)

	add, minus := getFunc(base)

	add(20)

	minus(10)
}
